Mobile application environments present many challenges to the seamless and graceful presentation of application user interfaces. Developers are therefore motivated to constantly improve their applications to improve the user experience, as well as to utilize memory, processor, and batter resources efficiently. However, application updates, especially in the mobile space, can be time consuming and themselves resource intensive as most updates are pushed down to devices from an app store or other such channels. To avoid such drawbacks, many software vendors employ A/B testing to test various application updates on a limited number of users before distributing them to a wider audience.
In a brief example, a developer may wish to test two color schemes in a user interface. One color scheme is tested on one set of users, while the other color scheme is tested on another set of users. Depending on the outcome of the test, one or the other of the color schemes may be incorporated into an update that is distributed more broadly. To carry out the tests on the mobile devices typically requires an on-the-fly modification of the application in its original form. For example, when an object is being retrieved from memory for display in a user interface (such as an object in a list), its color must be changed from its original color to the new color being tested.
Some solutions accomplish color changes (and other modifications to a user interface) by monitoring for when specific objects are being loaded and then changing their parameters in order to affect the color change. However, such techniques can result in flashes or other artifacts in the user interface. For example, a developer may wish to change the tenth item in a view of one-thousand items presented by an application. As a user scrolls through the view, a testing module installed on the device monitors for when the tenth item is brought into view in the user interface. When the tenth item appears, it is first presented in its old color and then is changed to its new color, which causes a noticeable flash in the user interface as the color changes.